home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / QD3DTransform.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  10.8 KB  |  369 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        QD3DTransform.h
  3.  
  4.      Contains:    Q3Transform routines                                                 
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.6
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1995-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DTRANSFORM__
  18. #define __QD3DTRANSFORM__
  19.  
  20. #ifndef __QD3D__
  21.     #include <QD3D.h>
  22. #endif
  23.  
  24.  
  25.  
  26.  
  27. #if PRAGMA_ONCE
  28. #pragma once
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. #if PRAGMA_IMPORT
  36. #pragma import on
  37. #endif
  38.  
  39. #if PRAGMA_STRUCT_ALIGN
  40.     #pragma options align=power
  41. #elif PRAGMA_STRUCT_PACKPUSH
  42.     #pragma pack(push, 2)
  43. #elif PRAGMA_STRUCT_PACK
  44.     #pragma pack(2)
  45. #endif
  46.  
  47. #if PRAGMA_ENUM_ALWAYSINT
  48.     #pragma enumsalwaysint on
  49. #elif PRAGMA_ENUM_OPTIONS
  50.     #pragma option enum=int
  51. #elif PRAGMA_ENUM_PACK
  52.     #if __option(pack_enums)
  53.         #define PRAGMA_ENUM_PACK__QD3DTRANSFORM__
  54.     #endif
  55.     #pragma options(!pack_enums)
  56. #endif
  57.  
  58. /******************************************************************************
  59.  **                                                                             **
  60.  **                            Transform Routines                                 **
  61.  **                                                                             **
  62.  *****************************************************************************/
  63. EXTERN_API_C( TQ3ObjectType )
  64. Q3Transform_GetType                (TQ3TransformObject     transform);
  65.  
  66. EXTERN_API_C( TQ3Matrix4x4 *)
  67. Q3Transform_GetMatrix            (TQ3TransformObject     transform,
  68.                                  TQ3Matrix4x4 *            matrix);
  69.  
  70. EXTERN_API_C( TQ3Status )
  71. Q3Transform_Submit                (TQ3TransformObject     transform,
  72.                                  TQ3ViewObject             view);
  73.  
  74.  
  75. /******************************************************************************
  76.  **                                                                             **
  77.  **                            MatrixTransform Routines                         **
  78.  **                                                                             **
  79.  *****************************************************************************/
  80. EXTERN_API_C( TQ3TransformObject )
  81. Q3MatrixTransform_New            (const TQ3Matrix4x4 *    matrix);
  82.  
  83. EXTERN_API_C( TQ3Status )
  84. Q3MatrixTransform_Submit        (const TQ3Matrix4x4 *    matrix,
  85.                                  TQ3ViewObject             view);
  86.  
  87. EXTERN_API_C( TQ3Status )
  88. Q3MatrixTransform_Set            (TQ3TransformObject     transform,
  89.                                  const TQ3Matrix4x4 *    matrix);
  90.  
  91. EXTERN_API_C( TQ3Status )
  92. Q3MatrixTransform_Get            (TQ3TransformObject     transform,
  93.                                  TQ3Matrix4x4 *            matrix);
  94.  
  95.  
  96. /******************************************************************************
  97.  **                                                                             **
  98.  **                            RotateTransform Data                             **
  99.  **                                                                             **
  100.  *****************************************************************************/
  101.  
  102. struct TQ3RotateTransformData {
  103.     TQ3Axis                         axis;
  104.     float                             radians;
  105. };
  106. typedef struct TQ3RotateTransformData    TQ3RotateTransformData;
  107. /******************************************************************************
  108.  **                                                                             **
  109.  **                            RotateTransform Routines                         **
  110.  **                                                                             **
  111.  *****************************************************************************/
  112. EXTERN_API_C( TQ3TransformObject )
  113. Q3RotateTransform_New            (const TQ3RotateTransformData * data);
  114.  
  115.  
  116. EXTERN_API_C( TQ3Status )
  117. Q3RotateTransform_Submit        (const TQ3RotateTransformData * data,
  118.                                  TQ3ViewObject             view);
  119.  
  120. EXTERN_API_C( TQ3Status )
  121. Q3RotateTransform_SetData        (TQ3TransformObject     transform,
  122.                                  const TQ3RotateTransformData * data);
  123.  
  124. EXTERN_API_C( TQ3Status )
  125. Q3RotateTransform_GetData        (TQ3TransformObject     transform,
  126.                                  TQ3RotateTransformData * data);
  127.  
  128. EXTERN_API_C( TQ3Status )
  129. Q3RotateTransform_SetAxis        (TQ3TransformObject     transform,
  130.                                  TQ3Axis                 axis);
  131.  
  132. EXTERN_API_C( TQ3Status )
  133. Q3RotateTransform_SetAngle        (TQ3TransformObject     transform,
  134.                                  float                     radians);
  135.  
  136. EXTERN_API_C( TQ3Status )
  137. Q3RotateTransform_GetAxis        (TQ3TransformObject     renderable,
  138.                                  TQ3Axis *                axis);
  139.  
  140. EXTERN_API_C( TQ3Status )
  141. Q3RotateTransform_GetAngle        (TQ3TransformObject     transform,
  142.                                  float *                radians);
  143.  
  144.  
  145. /******************************************************************************
  146.  **                                                                             **
  147.  **                    RotateAboutPointTransform Data                             **
  148.  **                                                                             **
  149.  *****************************************************************************/
  150.  
  151. struct TQ3RotateAboutPointTransformData {
  152.     TQ3Axis                         axis;
  153.     float                             radians;
  154.     TQ3Point3D                         about;
  155. };
  156. typedef struct TQ3RotateAboutPointTransformData TQ3RotateAboutPointTransformData;
  157. /******************************************************************************
  158.  **                                                                             **
  159.  **                    RotateAboutPointTransform Routines                         **
  160.  **                                                                             **
  161.  *****************************************************************************/
  162. EXTERN_API_C( TQ3TransformObject )
  163. Q3RotateAboutPointTransform_New    (const TQ3RotateAboutPointTransformData * data);
  164.  
  165. EXTERN_API_C( TQ3Status )
  166. Q3RotateAboutPointTransform_Submit (const TQ3RotateAboutPointTransformData * data,
  167.                                  TQ3ViewObject             view);
  168.  
  169. EXTERN_API_C( TQ3Status )
  170. Q3RotateAboutPointTransform_SetData (TQ3TransformObject  transform,
  171.                                  const TQ3RotateAboutPointTransformData * data);
  172.  
  173. EXTERN_API_C( TQ3Status )
  174. Q3RotateAboutPointTransform_GetData (TQ3TransformObject  transform,
  175.                                  TQ3RotateAboutPointTransformData * data);
  176.  
  177. EXTERN_API_C( TQ3Status )
  178. Q3RotateAboutPointTransform_SetAxis (TQ3TransformObject  transform,
  179.                                  TQ3Axis                 axis);
  180.  
  181. EXTERN_API_C( TQ3Status )
  182. Q3RotateAboutPointTransform_GetAxis (TQ3TransformObject  transform,
  183.                                  TQ3Axis *                axis);
  184.  
  185.  
  186. EXTERN_API_C( TQ3Status )
  187. Q3RotateAboutPointTransform_SetAngle (TQ3TransformObject  transform,
  188.                                  float                     radians);
  189.  
  190. EXTERN_API_C( TQ3Status )
  191. Q3RotateAboutPointTransform_GetAngle (TQ3TransformObject  transform,
  192.                                  float *                radians);
  193.  
  194.  
  195. EXTERN_API_C( TQ3Status )
  196. Q3RotateAboutPointTransform_SetAboutPoint (TQ3TransformObject  transform,
  197.                                  const TQ3Point3D *        about);
  198.  
  199. EXTERN_API_C( TQ3Status )
  200. Q3RotateAboutPointTransform_GetAboutPoint (TQ3TransformObject  transform,
  201.                                  TQ3Point3D *            about);
  202.  
  203.  
  204. /******************************************************************************
  205.  **                                                                             **
  206.  **                    RotateAboutAxisTransform Data                             **
  207.  **                                                                             **
  208.  *****************************************************************************/
  209.  
  210. struct TQ3RotateAboutAxisTransformData {
  211.     TQ3Point3D                         origin;
  212.     TQ3Vector3D                     orientation;
  213.     float                             radians;
  214. };
  215. typedef struct TQ3RotateAboutAxisTransformData TQ3RotateAboutAxisTransformData;
  216. /******************************************************************************
  217.  **                                                                             **
  218.  **                    RotateAboutAxisTransform Routines                         **
  219.  **                                                                             **
  220.  *****************************************************************************/
  221. EXTERN_API_C( TQ3TransformObject )
  222. Q3RotateAboutAxisTransform_New    (const TQ3RotateAboutAxisTransformData * data);
  223.  
  224. EXTERN_API_C( TQ3Status )
  225. Q3RotateAboutAxisTransform_Submit (const TQ3RotateAboutAxisTransformData * data,
  226.                                  TQ3ViewObject             view);
  227.  
  228. EXTERN_API_C( TQ3Status )
  229. Q3RotateAboutAxisTransform_SetData (TQ3TransformObject     transform,
  230.                                  const TQ3RotateAboutAxisTransformData * data);
  231.  
  232. EXTERN_API_C( TQ3Status )
  233. Q3RotateAboutAxisTransform_GetData (TQ3TransformObject     transform,
  234.                                  TQ3RotateAboutAxisTransformData * data);
  235.  
  236.  
  237. EXTERN_API_C( TQ3Status )
  238. Q3RotateAboutAxisTransform_SetOrientation (TQ3TransformObject  transform,
  239.                                  const TQ3Vector3D *    axis);
  240.  
  241. EXTERN_API_C( TQ3Status )
  242. Q3RotateAboutAxisTransform_GetOrientation (TQ3TransformObject  transform,
  243.                                  TQ3Vector3D *            axis);
  244.  
  245.  
  246. EXTERN_API_C( TQ3Status )
  247. Q3RotateAboutAxisTransform_SetAngle (TQ3TransformObject  transform,
  248.                                  float                     radians);
  249.  
  250. EXTERN_API_C( TQ3Status )
  251. Q3RotateAboutAxisTransform_GetAngle (TQ3TransformObject  transform,
  252.                                  float *                radians);
  253.  
  254.  
  255. EXTERN_API_C( TQ3Status )
  256. Q3RotateAboutAxisTransform_SetOrigin (TQ3TransformObject  transform,
  257.                                  const TQ3Point3D *        origin);
  258.  
  259. EXTERN_API_C( TQ3Status )
  260. Q3RotateAboutAxisTransform_GetOrigin (TQ3TransformObject  transform,
  261.                                  TQ3Point3D *            origin);
  262.  
  263.  
  264. /******************************************************************************
  265.  **                                                                             **
  266.  **                            ScaleTransform Routines                             **
  267.  **                                                                             **
  268.  *****************************************************************************/
  269. EXTERN_API_C( TQ3TransformObject )
  270. Q3ScaleTransform_New            (const TQ3Vector3D *    scale);
  271.  
  272. EXTERN_API_C( TQ3Status )
  273. Q3ScaleTransform_Submit            (const TQ3Vector3D *    scale,
  274.                                  TQ3ViewObject             view);
  275.  
  276. EXTERN_API_C( TQ3Status )
  277. Q3ScaleTransform_Set            (TQ3TransformObject     transform,
  278.                                  const TQ3Vector3D *    scale);
  279.  
  280. EXTERN_API_C( TQ3Status )
  281. Q3ScaleTransform_Get            (TQ3TransformObject     transform,
  282.                                  TQ3Vector3D *            scale);
  283.  
  284.  
  285. /******************************************************************************
  286.  **                                                                             **
  287.  **                            TranslateTransform Routines                         **
  288.  **                                                                             **
  289.  *****************************************************************************/
  290. EXTERN_API_C( TQ3TransformObject )
  291. Q3TranslateTransform_New        (const TQ3Vector3D *    translate);
  292.  
  293. EXTERN_API_C( TQ3Status )
  294. Q3TranslateTransform_Submit        (const TQ3Vector3D *    translate,
  295.                                  TQ3ViewObject             view);
  296.  
  297. EXTERN_API_C( TQ3Status )
  298. Q3TranslateTransform_Set        (TQ3TransformObject     transform,
  299.                                  const TQ3Vector3D *    translate);
  300.  
  301. EXTERN_API_C( TQ3Status )
  302. Q3TranslateTransform_Get        (TQ3TransformObject     transform,
  303.                                  TQ3Vector3D *            translate);
  304.  
  305. /******************************************************************************
  306.  **                                                                             **
  307.  **                            QuaternionTransform Routines                     **
  308.  **                                                                             **
  309.  *****************************************************************************/
  310. EXTERN_API_C( TQ3TransformObject )
  311. Q3QuaternionTransform_New        (const TQ3Quaternion *    quaternion);
  312.  
  313. EXTERN_API_C( TQ3Status )
  314. Q3QuaternionTransform_Submit    (const TQ3Quaternion *    quaternion,
  315.                                  TQ3ViewObject             view);
  316.  
  317. EXTERN_API_C( TQ3Status )
  318. Q3QuaternionTransform_Set        (TQ3TransformObject     transform,
  319.                                  const TQ3Quaternion *    quaternion);
  320.  
  321. EXTERN_API_C( TQ3Status )
  322. Q3QuaternionTransform_Get        (TQ3TransformObject     transform,
  323.                                  TQ3Quaternion *        quaternion);
  324.  
  325.  
  326. /******************************************************************************
  327.  **                                                                             **
  328.  **                            ResetTransform Routines                             **
  329.  **                                                                             **
  330.  *****************************************************************************/
  331. EXTERN_API_C( TQ3TransformObject )
  332. Q3ResetTransform_New            (void);
  333.  
  334. EXTERN_API_C( TQ3Status )
  335. Q3ResetTransform_Submit            (TQ3ViewObject             view);
  336.  
  337.  
  338.  
  339.  
  340.  
  341. #if PRAGMA_ENUM_ALWAYSINT
  342.     #pragma enumsalwaysint reset
  343. #elif PRAGMA_ENUM_OPTIONS
  344.     #pragma option enum=reset
  345. #elif defined(PRAGMA_ENUM_PACK__QD3DTRANSFORM__)
  346.     #pragma options(pack_enums)
  347. #endif
  348.  
  349. #if PRAGMA_STRUCT_ALIGN
  350.     #pragma options align=reset
  351. #elif PRAGMA_STRUCT_PACKPUSH
  352.     #pragma pack(pop)
  353. #elif PRAGMA_STRUCT_PACK
  354.     #pragma pack()
  355. #endif
  356.  
  357. #ifdef PRAGMA_IMPORT_OFF
  358. #pragma import off
  359. #elif PRAGMA_IMPORT
  360. #pragma import reset
  361. #endif
  362.  
  363. #ifdef __cplusplus
  364. }
  365. #endif
  366.  
  367. #endif /* __QD3DTRANSFORM__ */
  368.  
  369.